;
(deftemplate samochod
	(slot posiadacz)
	(slot typ (allowed-values ekonomiczny zwykly szybki)(default zwykly))
)

;
(deffacts kierowca2
	(osoba
		(nazwa kierowca_szybki)
		(koszt 30)
		(szybkosc 50)
		(bezpieczenstwo 85)
		(wygoda 100)
		(pojazd_mechaniczny tak)
		(rodzaj_pojazdu samochod)
	)
)

;
(deffacts samochod2
	(samochod
		(posiadacz kierowca_szybki)
		(typ szybki)
	)
	(akcja
		(typ_akcji dodaj_samochody)
	)
)

;
(defrule wplyw_samochodow
	?a <- (akcja (typ_akcji dodaj_samochody))
	?o <- (osoba (nazwa ?na)(koszt ?ko)(szybkosc ?sz)(bezpieczenstwo ?be)(rodzaj_pojazdu samochod))
	(samochod (posiadacz ?na)(typ ?ty))
	=>
	(if (= (str-compare ?ty "ekonomiczny") 0)
		then
		(modify ?o(koszt (- ?ko 10))(szybkosc (- ?sz 10))(bezpieczenstwo (+ ?be 15)))
		(printout t "" ?na " porusza sie ekonomicznym samochodem (mniejszy koszt i szybkosc, ale wieksze bezpieczenstwo)." crlf)
	)
	(if (= (str-compare ?ty "szybki") 0)
		then
		(modify ?o(koszt (+ ?ko 10))(szybkosc (+ ?sz 50))(bezpieczenstwo (- ?be 15)))
		(printout t "" ?na " porusza sie szybkim samochodem (wiekszy koszt i szybkosc, ale mniejsze bezpieczenstwo + ryzyko kontroli drogowej)." crlf)
	)	
	(retract ?a)
)

;
(defrule kontroluj
	?a <- (akcja (typ_akcji kontrola_drogowa))
	?o <- (osoba (nazwa ?na)(koszt ?ko)(szybkosc ?sz&:(> ?sz 50))(pojazd_mechaniczny tak))
	=>
	(modify ?o(koszt (+ ?ko 100)))
	(printout t "" ?na " z powodu przekroczenia predkosci otrzymal mandat. Jego koszt podrozy rosnie." crlf)
	(retract ?a)
)